import E_command
import Elysium_BD
import Elysium_XF
import Elysium_Spark
import Elysium_command_run
import E_sys
import logging
import os


def inf():
    model_name = "E_sys"
    model_function = "检测目前加载的所有模块"
    return model_name, model_function

def sys():
    # 创建一个空字典，用于存储模块名称和相应的 inf() 返回值
    inf_results = {}

    # 获取所有的本地库文件
    local_libraries = [E_sys, E_command, Elysium_BD, Elysium_XF, Elysium_Spark,Elysium_command_run]

    # 遍历每个本地库文件
    for lib in local_libraries:
        # 获取模块中的所有属性名
        attributes = dir(lib)
        # 遍历每个属性
        for attr in attributes:
            # 检查属性是否为函数，并且是否为 inf 函数
            if callable(getattr(lib, attr)) and attr == 'inf':
                # 调用 inf() 函数获取结果，并存储到字典中（如果模块信息尚不存在）
                if lib.__name__ not in inf_results:
                    model_name, model_function = getattr(lib, attr)()
                    inf_results[lib.__name__] = {'model_name': model_name, 'model_function': model_function}

    # 创建一个空列表，用于存储每个模块的结果
    results = []

    # 将每个模块的结果添加到列表中
    for module_name, inf_result in inf_results.items():
        results.append((inf_result['model_name'], inf_result['model_function']))

    # 返回结果列表
    return results

# 调用 sys() 函数并将结果赋值给变量
sys_results = sys()

# 打印结果
# for model_name, model_function in sys_results:
#     print(f"模块名称: {model_name}")
#     print(f"模块功能: {model_function}")
#     print(f"Done")

def configure_logging():
    # 确保日志目录存在
    log_dir = '.Elysium_log'
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    # 配置日志记录
    logging.basicConfig(
        filename=os.path.join(log_dir, 'system.log'),
        level=logging.INFO,     # 日志级别
        format='%(asctime)s - %(levelname)s - %(message)s',  # 日志格式
    )

def log():
    configure_logging()

    # 获取 E_sys.sys 函数的输出
    sys_output = sys()

    # 记录日志
    logging.info(f"系统日志信息: {sys_output}")

    # 打印日志内容到控制台（可选）
    # print(sys_output)
